const readline = require('readline');
const login = require("./login"), pinfo = require("./pinfo"), down = require("./down"), upload = require("./upload");

//只下载小文件
global.DOWNSMALL = false;
/** 请求网盘返回 */
function callback(ret){
	if(ret){
		if(ret == -6){ //身份验证失败
			if(process.argv.length >= 3){
				login.login(init);
			}else{
				login.loginBrower(init);
			}
		}else{
			init();
		}
	}else{
		if(process.argv.length > 3){
			let op = process.argv.slice(3);
			console.log(op);
			cmd(op);
			process.argv.length = 3;
		}else{
			next();
		}
	}	
}

/** 初始化 */
function init(){
	//console.log(process.argv);
	login.checkLogin((u)=>{
		if(u){ //登录成功
			global.user = u;
			pinfo.list('/', callback);
		}else{
			console.log("登录失败了");
		}
	}, false, process.argv[2]);	
}
//开始
init();

const rl = readline.createInterface({
	input: process.stdin,
	output: process.stdout
});
/** 等待下一步操作 */
function next(){
	rl.question('>', (answer) => {
		let op = answer.trim().split(" ");
		cmd(op);
	});
}
//执行命令
function cmd(op){
	if(op[0] == 'ls'){ //显示目录
		pinfo.list("/" + (op[1]||''), callback);
	}else if(op[0] == 'get'){ //下载目录到指定目录
		if(op.length < 3){
			console.log("必须输入网盘目录和本地目录");
			return next();
		}
		if(op[3]) global.DOWNSMALL = true;
		down.cmp(op[1], op[2], callback);
	}else if(op[0] == 'cmp'){ //比较阿里云盘下载到指定目录
		if(op.length < 3){
			console.log("必须输入网盘目录和本地目录");
			return next();
		}
		down.cmpAli(op[1], op[2], op[3], callback);
	}else if(op[0] == 'put'){ //上传指定目录并同步
		if(op.length < 3){
			console.log("必须输入本地目录和网盘目录");
			return next();
		}
		if(!op[2]){
			console.log("必须输入网盘目录");
			return next();
		}
		upload.cmp(op[2], op[1], callback);
	}else if(op[0] == '?' || op[0] == 'help'){ //显示帮助信息
		console.log(`?或help 显示帮助信息
ls 显示云盘当前目录下内容
pwd 显示当前目录
get 网盘目录 本地目录  下载指定目录到
cmp 网盘目录 网盘目录 本地目录  下载指定目录到
put 本地目录 网盘目录  上传本地目录到云盘目录(默认放在 /apps/我的盘/ 下面的内容)`);
	}else if(op[0] == 'pwd'){ //显示当前目录
		console.log('/');
		return next();
	}else{
		console.log("未知命令 使用?显示帮助信息`");
		next();
	}
}
